package semantico.entidades;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

public class Funcao {
	
	private String nome;
	private String retorno;
	private Map<String, Variavel> variaveis;
	private Map<String, Campo> parametros;
	private LinkedList<String> tipos_parametros;

	public Funcao() {
		
		variaveis  = new HashMap<String, Variavel>();
		parametros  = new HashMap<String, Campo>();
		tipos_parametros = new LinkedList<String>();
		
	}


	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getRetorno() {
		return retorno;
	}

	public void setRetorno(String retorno) {
		this.retorno = retorno;
	}
	
	public LinkedList<String> getTipos_parametros() {
		return tipos_parametros;
	}
	
	public void addTipoParametro(String tipo){
		tipos_parametros.add(tipo);
	}

	public void addVariavel(Variavel var){
		this.variaveis.put(var.getNome(), var);
	}
	
	public boolean contemVariavel(String nome, String tipo){
		if(this.variaveis.containsKey(nome)){
			Variavel var = variaveis.get(nome);
			if(var.getTipo().equalsIgnoreCase(tipo))
				return true;
		}
		
		return false;
	}
	
	public boolean contemVariavel(String nome){
		if(this.variaveis.containsKey(nome)){
				return true;
		}	
		return false;
	}
	
	public Map<String, Variavel> getVariaveis() {
		return variaveis;
	}



	public void addCampo(Campo cam){
		this.parametros.put(cam.getNome(), cam);
	}
	
	public boolean contemCampo(String nome, String tipo){
		if(parametros.containsKey(nome)){
			Campo camp = parametros.get(nome);
			if(camp.getTipo().equalsIgnoreCase(tipo))
				return true;
		}
		
		return false;
	}

	public boolean contemParametro(String nome){
		if(this.variaveis.containsKey(nome))
			return true;		
		return false;
	}
		
	

	

}
